<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    function Father () {
        this.getName = function () { console.log('111') }
        return this;
    }
    Father.getName = function () { console.log('222') }//Father自己的方法
    Father.prototype.getName = function () { console.log('333') }//Father的原型里的方法
    var getName = function () { console.log('444') }
    function getName () { console.log('555') }//全局的getName变量提升，被定义为555，然后走到21行的赋值被覆盖成444
    Father.getName()//调用Father的方法
    getName()//全局的getName
    new Father.getName()//调用Father的方法并new
    new Father().getName()//调用实例化对象的getName方法
    new new Father().getName()//以getName为构造函数去new
</script>

</html>